/*
 * automato.h
 *
 *  Created on: 05/06/2012
 *      Author: annibal
 */

#ifndef AUTOMATO_H_
#define AUTOMATO_H_

#include "estado.h"

typedef struct {
    int numEstados;			/* Número de estados do AF */
    Estado *estados;		/* Lista dos estados do AF */
    int tamAlfabeto;		/* Tamanho do alfabeto do AF */
    char *alfabeto;			/* Lista de símbolos do alfabeto do AF */
    Estado ***transicoes;	/* Tabela de transições do AF */
    Estado *estadoInicial;	/* Estado inicial do AF */
    Estado *estadoAtual;	/* Estado atual do AF */
    char leitor;			/* Sensor de leitura do AF */
} Automato;

void criaAutomato(Automato *M, FILE *espec);
void criaEstados(Automato *M, FILE *espec);
void geraAlfabeto(Automato *M, FILE *espec);
void criaTransicoes(Automato *M, FILE *espec);
int analisaCadeia(Automato *M, char *cadeia, FILE* saida);
int analisaSimbolo(Automato *M, FILE *saida);
void adicionaTransicao(Automato *M, FILE *espec);
Estado* buscaTransicao(Automato *M);

#endif /* AUTOMATO_H_ */
